package com.zenithmind.chat.pojo.query;

import com.zenithmind.common.query.BaseQuery;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 聊天消息查询参数
 *
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ChatMessageQuery extends BaseQuery {

    /**
     * 群组ID
     */
    private String groupId;

    /**
     * 发送者ID
     */
    private String senderId;

    /**
     * 发送者姓名
     */
    private String senderName;

    /**
     * 消息类型（1-文本，2-图片，3-文件，4-语音，5-视频，6-系统消息，7-表情，8-链接）
     */
    private Integer messageType;

    /**
     * 消息内容（模糊搜索）
     */
    private String content;

    /**
     * 消息状态（1-正常，2-已撤回，3-已删除）
     */
    private Integer status;

    /**
     * 是否置顶（0-否，1-是）
     */
    private Integer isPinned;

    /**
     * 开始时间
     */
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    private LocalDateTime endTime;

    /**
     * 用户ID（查询用户相关的消息）
     */
    private String userId;

    /**
     * 是否只查询@我的消息
     */
    private Boolean onlyMentionMe;

    /**
     * 最后消息ID（用于分页加载更多）
     */
    private String lastMessageId;

    /**
     * 加载方向（before-向前加载，after-向后加载）
     */
    private String direction;

    /**
     * 限制数量
     */
    private Integer limit;
}
